home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 001 / _indicator / !Indicator / Source (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1994-09-13  |  9KB  |  422 lines

  1.  ><Indicator$Dir>.!RunImage
  2.  This application is FreeWare. (c) 1993 Dick Alstein
  3. Appl$="Indicator"
  4. Version$="1.04 (12-Sep-94)"
  5. error
  6. quit%=
  7.     .mask%=(1<<4)+(1<<5)+(1<<7)+(1<<11)+(1<<12)
  8.  "OS_ReadMonotonicTime" 
  9.  mode% 
  10. -      
  11.  "Wimp_Poll",mask%,blk% 
  12.  reason%
  13. )      
  14.  "OS_ReadMonotonicTime" 
  15. (      
  16.  t2%>t1%+1 
  17.  used%+=t2%-t1%-1
  18.  1,2,3
  19. =      
  20.  "Wimp_PollIdle",mask%,blk%,t1%+period% 
  21.  reason%
  22.  reason% 
  23.       
  24.  mode% 
  25.         
  26. -          
  27.  t2%>=updatetime% 
  28. newperiod
  29.         
  30.  1,2,3
  31.           
  32. updateicon(
  33.       
  34. (    
  35.  2 : 
  36.  "Wimp_OpenWindow",,blk%
  37. )    
  38.  3 : 
  39.  "Wimp_CloseWindow",,blk%
  40. ?    
  41.  6 : 
  42. mouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
  43. '    
  44.  8 : 
  45.  "Wimp_ProcessKey",key%
  46.  9 : 
  47. menuselect(blk%)
  48. !     
  49.  17,18 : 
  50. receive(blk%)
  51.  quit%
  52.  "Wimp_CloseDown"
  53. defaultstatus
  54. setmode(0)
  55. colour%(0)=11
  56. colour%(1)=10
  57. colour%(2)=7
  58. colour%(3)=14
  59. errbox(err$,boxes%)
  60. errblk%!0=0
  61. $(errblk%+4)=err$+
  62.  "Wimp_ReportError",errblk%,boxes%,Appl$ 
  63.  ,click%
  64. =(click%=1)
  65. error
  66.  "Wimp_CloseDown" : 
  67. errbox(
  68. $+" (line "+
  69. )+")",3) 
  70.  "Wimp_CloseDown"
  71.  flg%,page_size%,no_pages%
  72.  errblk% &100
  73.  "Wimp_Initialise",200,&4B534154,Appl$ 
  74.  osversion%,thistask%
  75. error
  76.  iconblk% 32
  77.  blk% &300
  78. indsize%=&100
  79.  indir% indsize%
  80. indirend%=indir%+indsize%
  81.  ptrinfo% 20
  82. I)spfilename$="<Indicator$Dir>.Sprites"
  83.  "OS_ReadModeVariable",27,0 
  84.  ;flg% : 
  85.  test if hires modes available
  86.  (flg% 
  87.  2)=0 
  88.   spfilename$+="22"
  89.  "OS_File",17,spfilename$ 
  90.  ,,,,spsize%
  91. spsize%+=16
  92.  sparea% spsize%
  93. sparea%!0=spsize%
  94. sparea%!8=16
  95.  "OS_SpriteOp",256+9,sparea%
  96.  "OS_SpriteOp",256+10,sparea%,spfilename$
  97.  spname% 14
  98. $spname%="display"
  99.  osversion%<300 
  100.   iconblk%!0=-1
  101.   iconblk%!0=-7
  102. iconblk%!4=0 : iconblk%!8=0
  103. ]$iconblk%!12=132 : iconblk%!16=68
  104. iconblk%!20=&7000311A
  105. iconblk%!24=spname%
  106. iconblk%!28=sparea%
  107. iconblk%!32=12
  108.  "Wimp_CreateIcon",,iconblk% 
  109.  baricon%
  110.  "Wimp_OpenTemplate",,"<Indicator$Dir>.Templates"
  111. d"infowin%=
  112. loadtemplate("Info")
  113. e!$(blk%!(92+3*32+20))=Version$
  114.  "Wimp_CloseTemplate"
  115. initmenus
  116.  usage%(52)
  117. mode%=-1
  118.  colour%(3)
  119.  peak%(4)
  120.  peaktime%(4)
  121.  "OS_ReadMonotonicTime" 
  122.  "OS_ReadMemMapInfo" 
  123.  page_size%,no_pages%
  124. oMtotalmem%=(page_size%*no_pages%) 
  125.  1024 : 
  126.  for slider in freemem display
  127. lastfree$=""
  128. lasttime$=""
  129. loadstatus
  130. initmenus
  131.  "MenuUtil_Initialise",010,0
  132.  "MenuUtil_New",,Appl$,9 
  133.  mainmenu%
  134.  "MenuUtil_Add",mainmenu%,"Info" 
  135.  item_info%
  136.  "MenuUtil_Add",mainmenu%,"CPU usage" 
  137.  item_mode0%
  138.  "MenuUtil_Add",mainmenu%,"Free memory" 
  139.  item_mode1%
  140.  "MenuUtil_Add",mainmenu%,"Time" 
  141.  item_mode2%
  142.  "MenuUtil_Add",mainmenu%,"VU meter" 
  143.  item_mode3%
  144.  "MenuUtil_Add",mainmenu%,"Set colour" 
  145.  item_colour%
  146.  "MenuUtil_Add",mainmenu%,"Save status" 
  147.  item_savestat%
  148.  "MenuUtil_Add",mainmenu%,"Quit" 
  149.  item_quit%
  150.  "MenuUtil_Dots",item_info%,1
  151.  "MenuUtil_Dots",item_mode3%,1
  152.  "MenuUtil_SubMenu",item_info%,infowin%
  153.  "MenuUtil_ColourMenu",,"" 
  154.  colourmenu%
  155.  "MenuUtil_SubMenu",item_colour%,colourmenu%
  156. loadstatus
  157.  ("<Indicator$Dir>.Status")
  158.  F%=0 
  159. defaultstatus
  160. #F%,status%
  161.  I%=0 
  162. #F%,colour%(I%)
  163. setmode(status%)
  164. loadtemplate(name$)
  165.  handle%
  166.  "Wimp_CloseTemplate" : 
  167. error
  168.  "Wimp_LoadTemplate",,blk%+4,indir%,indirend%,-1,name$,0 
  169.  ,,indir%
  170.  "Wimp_CreateWindow",,blk%+4 
  171.  handle%
  172. =handle%
  173. menuselect(selection%)
  174.  "Wimp_GetPointerInfo",,ptrinfo%
  175.  selection%!0 
  176.  1,2,3,4
  177. "    
  178. setmode(selection%!0 - 1)
  179.  selection%!4>=0 
  180. %      colour%(mode%)=selection%!4
  181.       
  182. updateicon(
  183.         
  184. savestatus
  185.     quit%=
  186.  (ptrinfo%!8 
  187. showmenu(0)
  188. modevar(v%)
  189.  val%
  190.  "OS_ReadModeVariable",-1,v% 
  191.  ,,val%
  192.     =val%
  193. mouseclick(xpos%,ypos%,button%,wndw%,icon%)
  194.  wndw% 
  195.  button% 
  196.       
  197.         
  198. showmenu(blk%)
  199.       
  200.         
  201.  mode%=3 
  202.           
  203. setmode(0)
  204.         
  205.           
  206. setmode(mode%+1)
  207.         
  208.       
  209.         
  210.  mode%=0 
  211.           
  212. setmode(3)
  213.         
  214.           
  215. setmode(mode%-1)
  216.         
  217.         
  218. newperiod
  219.   usagep%=(usagep%+1) 
  220.  used%>period% 
  221.     usage%(usagep%)=40
  222. ,    usage%(usagep%)=(40*used%) 
  223.  period%
  224.   used%-=period%
  225.  used%<(2*period%)
  226.  "OS_ReadMonotonicTime" 
  227.  updatetime%
  228. updatetime%+=period%
  229. used%=0
  230. updateicon(
  231.  *** plots text in the icon, H- and V-centered
  232. ploticontext(text$,yoffset%)
  233.  xsize%
  234.  deskfont%=0 
  235.  64-8*
  236. (text$),46+yoffset%
  237.  text$;
  238.  "Wimp_TextOp",1,text$ 
  239.  xsize%
  240.  "Font_SetFont",deskfont%
  241.  "Font_SetFontColours",0,2,3,4
  242.  "Font_Paint",0,text$,1<<4,64-(xsize% 
  243. 2),22+yoffset%
  244. readvarval(var$)
  245.  len%
  246.  "OS_ReadVarVal",var$,blk%,256,0 
  247.  ,,len%
  248. blk%?len%=13
  249. =$(blk%)
  250. receive(buf%)
  251.  sender%,ref%,code%,file%,cmd$
  252. sender%=buf%!4
  253. ref%=buf%!8
  254. code%=buf%!16
  255.  sender% <> thistask% 
  256.  code% 
  257.       quit%=
  258. #      
  259.  desktop save (RiscOS 3)
  260.       file%=buf%!20
  261. 6      cmd$="Run "+
  262. readvarval("Indicator$Dir")+
  263. +      
  264.  "OS_GBPB",2,file%,cmd$,
  265. (cmd$)
  266.  &400CF
  267. ,      
  268.  desktop font change (RiscOS 3.5)
  269.       
  270. updateicon(
  271. savestatus
  272.  ("<Indicator$Dir>.Status")
  273.  #F% : 
  274. error : 
  275. #F%,mode%
  276.  I%=0 
  277. #F%,colour%(I%)
  278. seticon(window%,icon%)
  279. iconblk%!0=window%
  280. iconblk%!4=icon%
  281. iconblk%!8=0
  282. iconblk%!12=0
  283.  "Wimp_SetIconState",,iconblk%
  284. setmode(newmode%)
  285.  mode%<>newmode% 
  286.   mode%=newmode%
  287.  mode% 
  288.       period%=40
  289.       
  290.  I%=0 
  291.         usage%(I%)=0
  292.       
  293.       usagep%=0
  294.       used%=0
  295.       updatetime%=0
  296.       period%=50
  297.       period%=100
  298.       period%=1
  299.       peak%()=0
  300.       peaktime%()=0
  301. updateicon(
  302. showmenu(blkptr%)
  303.  "MenuUtil_TickOnly",mainmenu%,mode%+1
  304.  "MenuUtil_TickOnly",colourmenu%,colour%(mode%)
  305.  "MenuUtil_Show",mainmenu%,blkptr%
  306. str(ptr%)
  307.  i%,s$
  308.  (ptr%?i%>=32) 
  309.  (i%<255)
  310.   s$+=
  311. (ptr%?i%)
  312.   i%+=1
  313. updateicon(forceupdate%)
  314.  first, check if icon needs to be updated
  315.  mode% 
  316. D.    
  317.  "Wimp_SlotSize",-1,-1 
  318.  ,,freepool%
  319.     free%=freepool%>>10
  320.  free%>=10000 
  321. G&      free$=
  322. (free%/1024),4)+" M"
  323. H        
  324.       free$=
  325. (free%)+" k"
  326. J        
  327. K"    update%=(free$<>lastfree$)
  328.     time$=
  329. $,17,5)
  330. N"    update%=(time$<>lasttime$)
  331.     update%=
  332.  update% 
  333.  forceupdate% 
  334.  osversion% < 350 
  335.     deskfont%=0
  336. VJ    
  337.  "Wimp_ReadSysInfo",8 
  338.  deskfont% : 
  339.  get handle of desktop font
  340.  with desktop outline font, you can't choose the text colour, so
  341.  "MenuUtil_Fade",item_colour%,(mode%=2)
  342. (deskfont%<>0)
  343.  "OS_SpriteOp",&13C,sparea%,"display",0 
  344.  ,R1,R2,R3
  345.  23,17,7,2,8;16;0,0 : 
  346.  set char size to 8*16 units
  347.  mode% 
  348. ^6      
  349.  "OS_SpriteOp",&122,sparea%,"empty0",0,0,0
  350.       
  351.  colour%(0)
  352.       J%=usagep%
  353.       
  354.  I%=1 
  355.         J%=(J%+1) 
  356.         
  357.  10+2*I%,12
  358.         
  359.  usage%(J%)>=4 
  360.           
  361.  1,0,usage%(J%)
  362.         
  363.       
  364.       lastfree$=free$
  365. j6      
  366.  "OS_SpriteOp",&122,sparea%,"empty1",0,0,0
  367.       
  368.  12,12
  369.       
  370.  colour%(1)
  371. m(      
  372.  97,(100*free%)
  373. (totalmem%),7
  374.       
  375.       
  376.       
  377. q!      
  378. ploticontext(free$,12)
  379.       lasttime$=time$
  380. t6      
  381.  "OS_SpriteOp",&122,sparea%,"empty2",0,0,0
  382.       
  383.  colour%(2)
  384.       
  385.       
  386. x       
  387. ploticontext(time$,0)
  388. z6      
  389.  "OS_SpriteOp",&122,sparea%,"empty3",0,0,0
  390.       
  391.  I%=1 
  392. |$        
  393.  "STM_ReadVU",I% 
  394.         L%=(102*L%)>>8
  395. ~(        
  396.  (t1%-peaktime%(I%)) > 50 
  397.           
  398.  peak%(I%)>10 
  399.             peak%(I%)-=10
  400.           
  401.             peak%(I%)=0
  402.           
  403.           peaktime%(I%)=t1%
  404.         
  405.         
  406.  peak%(I%) < L% 
  407.           peak%(I%)=L%
  408.           peaktime%(I%)=t1%
  409.         
  410.         
  411.  colour%(3)
  412. #        
  413.  12,12*(5-I%),L%,7
  414.         
  415.         
  416.  0,peak%(I%)-L%,0
  417.         
  418.  1,0,-7
  419.       
  420.  "OS_SpriteOp",&13C,R1,R2,R3
  421. seticon(-1,baricon%)
  422.